package com.sjq.common.util;

import java.util.ArrayList;
import java.util.List;

/**
 * 页面工具类
 * @author xc
 * @version 2018.02.08
 * @since jdk1.6
 *
 */
public class Page<T> {
	
	//页面总数
	private int count=1;
	//页码
	private int pageNo=1;
	//每页个数
	private int pageSize=10;
	//数据总数
	private int dataSize=0;
	//限制起始数
	private int start=1;
	//限制结束数
	private int end=1;
	
	private List<T> datas=new ArrayList<T>();
	
	public Page(int pageNo,int dataSize){
		this.pageNo=pageNo;
		this.dataSize=dataSize;
		
	}
	/**
	 * 获取总页数
	 * @return
	 */
	public int getCount() {
		return count;
	}
	/**
	 * 获取当前页数
	 * @return
	 */
	public int getPageNo() {
		return pageNo;
	}
	/**
	 * 获取数据总数
	 * @return
	 */
	public int getDataSize() {
		return dataSize;
	}
	/**
	 * 获取每页个数
	 * @return
	 */
	public int getPageSize() {
		return pageSize;
	}
	/**
	 * 设置每页个数
	 * @param pageSize
	 */
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	/**
	 * 获取限制 开始数
	 * @return
	 */
	public int getStart() {
		//根据每页个数,生成限制数;
		setLimit();
		return start;
	}
	/**
	 * 获取限制 结束数
	 * @return
	 */
	public int getEnd() {
		//根据每页个数,生成限制数;
		setLimit();
		return end;
	}
	//设置限制数的开始结束
	private void setLimit(){
		//总数除以每页个数 得到总页数
		count=(int)Math.floor(dataSize/pageSize);
		//如果总数不能被每页个数整除 ,总页数加一
		if ((dataSize % pageSize)>0) count++;
		//页数不能为负数,如果当前页数小于1 ,页数赋值为1
		if(pageNo<1) pageNo=1;
		//当前页数不可能大于总页数,若果当前页数大于总页数 ,当前页数赋值为总页数
		if(pageNo>count)pageNo=count;
		//限制基数
		int limit = 0;
		//如果当前页数大于1,则限制基数根据页数修正
		if ((pageNo-1)>=0){
			limit = (pageNo-1)*pageSize;
		}
		start=limit+1;
		end=limit+pageSize;
		
	}

	public List<T> getDatas() {
		return datas;
	}
	public void setDatas(List<T> datas) {
		this.datas = datas;
	}

}
